package com.stargate.soft.transaction.groupe;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Iterator;

import com.stargate.bd.ConnectionBD;
import com.stargate.bd.bean.Personne;
import com.stargate.bd.dao.factory.GroupeDAO;
import com.stargate.bd.dao.factory.MembreDAO;
import com.stargate.io.LectureClavier;

/**
 * <h1>Suppression d’un groupe d’utilisateurs</h1>
 * <br>
 * Le superviseur veut supprimer un groupe d’utilisateurs.<br>
 * L’application le notifie que les entrées dans la table membre correspondant à ce groupe<br>
 * doivent être supprimées et lui demande s’il veut y procéder.<br>
 * Le superviseur valide et ces entrées sont supprimées, puis le groupe est supprimé également.<br>
 *
 */
public class SuppressionGroupe {
	
	private ArrayList<Personne> personnes;
	private int idGroupePers;

	public SuppressionGroupe() throws SQLException {
		ConnectionBD.setSerializable();
		init();
		ConnectionBD.commit();
	}

	private void init() throws SQLException {
		idGroupePers = LectureClavier.lireEntier("ID groupe personne :");
		
		// récupération des personnes du groupe
		MembreDAO membreDAO = new MembreDAO();
		personnes = membreDAO.selectPersonnesGroupe(idGroupePers);
		if (!personnes.isEmpty()) {
			System.out.println("*** Le groupe contient les personnes suivantes ***");
			for (Iterator<Personne> it = personnes.iterator(); it.hasNext();) {
				Personne personne = (Personne) it.next();
				System.out.println(personne);
			}
			
			System.out.println("La suppression de ce groupe entraine la suppression des membres ci-dessus.");
			System.out.print("Voulez-vous supprimer le groupe ? (o/n) ");
			if (LectureClavier.lireOuiNon()) {
				// suppression des membres du groupe
				membreDAO.delete(idGroupePers);
			} else {
				// non suppression du groupe
				return;
			}
		}
		
		// suppression du groupe
		GroupeDAO groupeDAO = new GroupeDAO();
		groupeDAO.delete(idGroupePers);
	}
	
	public int getIdGroupePers() {
		return idGroupePers;
	}
	
	public ArrayList<Personne> getPersonnes() {
		return personnes;
	}
}
